package 线程;
/*
    并发：同一时刻，多个任务交替执行，简单说，就是单核CPU实现的多任务
    并行：同一个时刻，多个任务同时执行，多核CPU可以实现并行

    start方法调用start0(start0方法是一个native方法，由jvm调用，用c或者c++实现)方法后，
    该线程不会立马执行，只是将线程变成了可执行状态，具体啥时候执行，取决于CPU，由CPU统一调度

    从Java的设计来看，通过继承Thread或者实现Runnable接口来创建线程本质上没有区别，从jdk的帮助
    文档可以看到Thread类本身就实现了Runnable接口

    实现Runnable接口方式更加适合多线程共享一个资源的情况，并且避免了单继承的线程
 */
public class 线程 {
    public static void main(String[] args) {
//        Runtime runtime = Runtime.getRuntime();
//        //获取当前电脑的CPU数量
//        int i = runtime.availableProcessors();
//        System.out.println(i);
        Cat1 cat = new Cat1("小猫");
        Thread thread = new Thread(cat);
        Thread thread1 = new Thread(cat);
        thread.start();
//        thread1.start();
    }
}
class Animal1{}
class Cat1 extends Animal1 implements Runnable{
    private int times;
    private String name;

    public Cat1(String name) {
        this.name = name;
    }

    @Override
    public void run() {
        while (true){
            try {
                Thread.sleep(1000);
                System.out.println("小狗" + Thread.currentThread().getName()+"\t" + name);
                times +=1;
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            if (times == 10) {
                break;
            }
        }

    }
}